package com.mycat.tencent.util;

import org.apache.commons.codec.digest.DigestUtils;

import java.util.*;

/**
 * @desc 微信签名相关 
 * @author roger
 * @date 2016年9月26日
 */
public class Sign {

    /**
     * 创建签名
     * https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=4_3
     *
     * @param packageParams 发送或者接收到的数据集合
     * @param signKey       Key
     * @return
     */
    public static String createSign(Map<String, Object> packageParams, String signKey) {
        SortedMap<String, Object> sortedMap = new TreeMap<>();
        sortedMap.putAll(packageParams);

        List<String> keys = new ArrayList<>(packageParams.keySet());
        Collections.sort(keys);

        StringBuffer toSign = new StringBuffer();
        for (String key : keys) {
            Object value = packageParams.get(key);
            if (null != value && !"".equals(value) && !"sign".equals(key)
                    && !"key".equals(key)) {
                toSign.append(key + "=" + value + "&");
            }
        }
        toSign.append("key=" + signKey);
        return DigestUtils.md5Hex(toSign.toString()).toUpperCase();
    }

}
